package com.wmh.baseservice.merchant.repository;

import com.wmh.baseservice.common.redis.config.RedisConfig;

import java.time.LocalDateTime;

/**
 * @author 谢骏
 * @date 2022/9/12 11:51
 **/
public interface MerchantGroupGoodsRepository {

    /**
     * 团购商品前缀 key
     * */
    String KEY_PREFIX = RedisConfig.MERCHANT + ":GroupGoodsTiming:";

    /**
     * 团购过期占位
     * */
    String KEY_PLACEHOLDER = "overTime:";

    /**
     * 团购过期保护 : 防止宕机
     * */
    String KEY_OVER_PROTECT = "overProtect:";

    /**
     * 保护时间间隔  一天 单位 : 秒
     * */
    Long PROTECT_INTERVAL = 86400L;

    /**
     * 缓存预热
     * */
    void init();

    /**
     * 新建一个团购定时任务
     * @param bgId 团购id
     * @param overTime 团购结束时间
     * */
    void setTiming(Long bgId, LocalDateTime overTime);

    /**
     * 删除一个团购定时任务
     * @param bgId 团购id
     * */
    void rmTiming(Long bgId);

    /**
     * 是否存在 团购结束 key
     * @param bgId 商品id
     * @return 是 true
     * */
    boolean hasOverKey(Long bgId);

    /**
     * 是否存在 团购保护 key
     * @param bgId 商品id
     * @return 是 true
     * */
    boolean hasProtectKey(Long bgId);

    /**
     * 得到保护key 值
     * @param bgId 商品id
     * @return JSON
     * */
    String getProtectKey(Long bgId);
}
